In [1]:
import numpy as np
import pandas as pd
from scipy import stats
In [3]:
%pylab inline
Исчерпанная рождаемость — количество детей, родившихся у женщины на момент окончания конвенционального репродуктивного возраста (45 лет). Для 1878 женщин старше 45, участвовавших в социологическом опросе жителей Швейцарии, известно количество детей. Этот признак — типичный счётчик, а, значит, его можно попробовать описать распределением Пуассона.
In [4]:
fin = open('fertility.txt', 'r')
data = map(lambda x: int(x.strip()), fin.readlines())
In [5]:
data[:20]
Out[5]:
In [6]:
pylab.bar(range(12), np.bincount(data), color = 'b', label = 'fertility_stat')
pylab.legend()
Out[6]:
In [7]:
l = np.mean(data)
l
Out[7]:
In [10]:
observed_frequences = np.bincount(data)
observed_frequences
Out[10]:
In [11]:
expected_frequences = [len(data)*stats.poisson.pmf(x, l) for x in range(min(data), max(data) + 1)]
expected_frequences
Out[11]:
In [12]:
pylab.bar(range(len(expected_frequences)), expected_frequences, color = 'b', label = 'poisson_distr')
pylab.legend()
Out[12]:
Статистика критерия хи-квадрат: $$\chi^2=\sum_{i=1}^K \frac{\left(n_i- np_i\right)^2}{np_i}$$ При справедливости нулевой гипотезы имеет распределение хи-квадрат с числом степеней свободы $K-1-m$, где $m$ - число параметров распределения, оцененных по выборке.
In [13]:
stats.chisquare(observed_frequences, expected_frequences, ddof = 1)
Out[13]: